package br.com.empeng.listener;

import javax.faces.application.NavigationHandler;
import javax.faces.context.FacesContext;
import javax.faces.event.PhaseEvent;
import javax.faces.event.PhaseId;
import javax.faces.event.PhaseListener;
import javax.servlet.http.HttpSession;

import br.com.empeng.model.entidades.Usuario;

public class Autorizacao implements PhaseListener {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	@Override
	public void afterPhase(PhaseEvent event) {
		//Contexto do Faces
		
		FacesContext facesContext = event.getFacesContext();
		
		//Pagina acessada
		String paginaAtual = facesContext.getViewRoot().getViewId();
		//Define true se for pagina de login e false se nao for
		boolean isPaginaLogin = paginaAtual.lastIndexOf("login.xhtml") >-1 ;
		
		//Capturando sessao
		HttpSession sessao = (HttpSession) facesContext.getExternalContext().getSession(true);
		//capturando atributo da sessao 
		Usuario usuAutenticado =  (Usuario)sessao.getAttribute("usuAutenticado");
		
		//Verifica se esta acessando qualquer pagina que nao seja login
		// e se nao esta autenticado
		//para poder redirecionar para tela de login
		if(!isPaginaLogin && usuAutenticado==null){
			//Objeto de Navegacao
			NavigationHandler nh = facesContext.getApplication().getNavigationHandler();
			//Redirecionamento
			nh.handleNavigation(facesContext, null, "login");
		}
		


	}

	@Override
	public void beforePhase(PhaseEvent arg0) {
		// TODO Auto-generated method stub

	}

	@Override
	public PhaseId getPhaseId() {
		// TODO Auto-generated method stub
		return PhaseId.RESTORE_VIEW;
	}

}
